import axios from 'axios'
import store from '../store'
import router from '../router'

// 封装axiso


// 添加请求拦截器
axios.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    console.log(config);
    if (store.state.token) {
        config.headers.Authorization = 'Bearer ' + store.state.token;
    }
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
    // 状态码是 200 - 300 或者 304  都进入正确逻辑
    console.log('正确响应');
    // 对响应数据做点什么
    // return response;
    return response.data;

}, function (error) {
    //   除了200-300 304 进入错误响应
    console.log('错误响应');
    // 对响应错误做点什么

    if (error.response) {
        const status = error.response.status;
        switch (status) {
            case 401:
                // 401 逻辑 跳转到登录页面
                console.log('未登录')
                router.push({
                    name: 'Login'
                })
                break;

            case 403:
                // 处理403 逻辑
                break;

        }
    } else {
        return Promise.reject(error);
    }

});




// 封装两个方法  get  post

/**
 * get方法，对应get请求
 * @param {String} url [请求的url地址]
 * @param {Object} params [请求时携带的参数]
 */
export function get(url, params) {
    return new Promise((resolve, reject) => {
        axios.get(url, {
            params
        }).then(res => {
            resolve(res);
        }).catch(err => {
            reject(err)
        })
    });
}

/** 
 * post方法，对应post请求 
 * @param {String} url [请求的url地址] 
 * @param {Object} params [请求时携带的参数] 
 */
 export function post(url, data) {
    return new Promise((resolve, reject) => {
         axios.post(url,data)
        .then(res => {
            resolve(res);
        })
        .catch(err =>{
            reject(err)
        })
    });
 };


export default axios